本发明公开了一种基于XML电子文档的水印隐藏和提取方法,属于信息隐藏技术领域,本发明通过将文档转化为XML文档,然后改变文档中文字的字间距来隐藏水印信息,不同的字间距代表不同的水印信息,改变字间距是通过改变XML字间距描述标记的值来实现的。比较文档中文字的字间距来提取水印信息,字间距的提取也是通过XML字间距描述标记的值得到的。因为XML文档具有可移植性且与平台无关,所以使得本发明的水印隐藏和提取方法可以在文档的修订状态下正确的添加和提取水印信息。本发明隐藏水印信息时在任何字体字号下都适用,并不影响文档的显示而且具有很好的通用性,实现了少量文字隐藏大量水印信息的目的。
1.一种基于XML电子文档的水印隐藏方法,包括以下步骤:a1)检查电子文档是否为XML格式,如果不是,则将其转换为XML格式;a2)指定多种不同的字间距表示多种不同的信息;a3)将水印信息转换为二进制比特流,并分为多个二进制比特段;a4)用每个字间距表示一段所述二进制比特段,依次将XML文档中文字的字间距修改为不同的指定字间距;其特征在于:所述步骤a2还包括a21)根据指定字间距的种类数,确定每个字间距表示信息的比特数;当指定字间距为z种时,则每两个字之间可以隐藏l=log
2z个比特信息,z和l为正整数;a22)对z种指定字间距进行编码——将上述字间距按照从第0种到第z-1种的顺序编号{0,1,2,3,...,z-1},{b
0,b
1,b
2,b
3,...,b
z-1}表示与字间距相对应的z种二进制比特段,各个比特段长度为l。
2.根据权利要求1所述的水印隐藏方法,其特征在于:所述步骤a3还包括a31)将需要隐藏的水印信息转化为二进制比特流B;a32)利用密钥Key对二进制比特流B进行置乱,得到置乱后的二进制比特流B1;a33)在置乱后的二进制比特流B1前加入长度为log
2l的包头构成二进制比特流B2,包头的二进制数值表示补0的个数;a34)并在B2后面补充0构成长度为l的整数倍的二进制比特流B3;a35)然后将B3进行分段处理,将二进制比特流B3划分为长度为l比特的比特段,Bit
1,Bit
2...Bit
i...,i为正整数。
3.根据权利要求2所述的水印隐藏方法,其特征在于:在所述步骤a33和a34中,包头设置为长度为k比特的比特段a
1a
2a
3...a
k,k=log
2l,对转化的二进制比特流B2进行判断,设[Len(B2)]/l=m,Len函数表示取二进制比特流B2的长度,m表示取整,[Len(B2)]modl=n,n表示余数,若二进制比特流B2的长度不是分段长度l的整数倍时,在B2的末尾补上l-n个比特的0后得到新二进制比特流B3,其比特长度为l的整数倍;并设置B3的包头比特段a
1a
2a
3...a
k的二进制数值为补充的0的个数。
4.根据权利要求1所述的水印隐藏方法,其特征在于:所述步骤a4还包括步骤:a41)根据字间距{0,1,2,3,...,z-1}与二进制比特段{b
0,b
1,b
2,b
3,...,b
z-1}的对应关系,将划分的若干长度为l的二进制比特段Bit
i代表的水印信息分别隐藏到文档中,即将字间距逐一修改为二进制比特段对应的字间距的距离;a42)将XML文档的字间距修改为不同的字间距则是通过找到XML文档的字间距描述标记,修改相应的值。
5.一种基于XML的电子文档的水印提取方法,包括如下步骤:b1)检查电子文档是否为XML格式,如果不是,则将其转换为XML格式;b2)根据预先指定的不同字间距的种数,确定每个字间距表示的二进制比特段;b3)从电子文档中读取字间距,判断字间距的值,将字间距转化为b2)中对应的二进制比特段;b4)将各二进制比特段组合成二进制比特流,并转换为相应的水印信息;其特征在于:所述步骤b2包括,b21)根据指定字间距的种类数,确定每个字间距表示信息的比特数;当指定字间距为z种时,则每两个字之间可以提取l=log
2z个比特信息,z和l为正整数;b22)对预先指定的z种指定字间距进行译码,即将字间距按照从第0种到第z-1种的顺序编号{0,1,2,3,...,z-1},各个字间距表示为与其相对应的z种二进制比特段{b
0,b
1,b
2,b
3,...,b
z-1},各个比特段长度为l比特,l=log
2z。
6.根据权利要求5所述的水印提取方法,其特征在于:所述步骤b3包括,b31)对字间距进行判断时,将每两个字之间的字间距按照和编码相同的规则进行译码,即根据字间距{0,1,2,3,...,z-1}与二进制比特段{b
0,b
2,b
3,...,b
z-1}的对应关系,转换为每个字间距对应的二进制比特段Bit
1,Bit
2...Bit
i...,将各二进制比特段合并得到二进制比特流B3;b32)字间距的读取是通过找到XML文档的字间距描述标记,读取出相应的值。
7.根据权利要求6所述的水印提取方法,其特征在于:所述步骤b4包括,b41)对二进制比特流B3,其前k个比特a
1a
2a
3...a
k是包头,k为log
2l,l表示每两个字之间嵌入的比特段长度,根据包头的二进制数值确定二进制比特流B3末尾补0的个数;b42)去除二进制比特流B3末尾的补0得到二进制比特流B2;b43)对得到的二进制比特流B2,去除长度为k的包头a
1a
2a
3...a
k,得到二进制比特流B1;b44)然后利用密钥Key对得到的二进制比特流B1进行置乱恢复,得到恢复后的序列B;b45)最后将二进制比特流B转化为水印信息。
技术领域本发明涉及一种水印隐藏和提取方法,尤其涉及一种XML文档的水印隐藏和提取方法。技术背景数字水印作为一种新颖的信息隐藏技术,为解决开放性网络上的版权保护、来源认证、篡改认证、网上发行、用户跟踪和身份认证等一系列问题提供了崭新的解决思路。但现在人们大多把注意力集中到了针对数字图像、音频和视频的数字水印技术的研究,涉及到以文档和二值图像作为载体的数字水印算法的研究却很少,以文档和二值图像作为载体的数字水印算法的设计难点在于文档或二值图像仅仅用两个不同的灰度值就能表示整个图像,几乎没有什么纹理和细节可言,有的仅仅是不同的几何形状,利用这样的载体很难设计出符合数字水印要求的方法来。已有的水印隐藏方法大都是把文档当作图片进行处理,在像素级别上隐藏水印信息。这样对文档进行修订或修改时水印便消失了,而本发明所研究的主要是电子文档这类往往又需要审核修改并及时进行批复的文档。所以针对以上问题,本发明研究出了基于XML的电子文档水印处理方法,XML文档具有可移植性,且与平台无关,对文档进行修改或删除后,对应的内容在XML中仍然有相关标记进行描述,所以这种水印处理方法在文档修订状态下也能正确的隐藏和提取水印信息。XML语言有很多优点,所以让本发明的水印隐藏方法与其它的方法相比也有很多优点:1.简单易用。本发明所采用的水印隐藏技术着手致力于对文字的字间距进行修改,所以添加完本发明的水印信息后,并不影响文档的显示。2.通用性很好。对任何字号,任何字体的文档都能很好的隐藏本发明的水印信息并能提取出本发明隐藏的水印信息,所以本发明具有很好的通用性。3.与XML语言很好的结合。基于XML的电子文档的水印隐藏的研究是在文档转化为XML文档的基础上来隐藏本发明的水印信息的,所以本发明可以利用XML本身的强大功能。4.具有很好的扩展性。利用XML语言和本发明所研究的水印隐藏方法对今后研究隐藏音频视频水印信息都有很好的借鉴。使本发明今后的研究有很好的扩展功能。
发明内容针对现有的水印隐藏和提取方法对文档进行修订或修改时水印便会消失的问题,本发明为解决这一问题提出了一种基于XML的电子文档水印隐藏和提取方法。本发明采取的技术方案如下:一种基于XML电子文档的水印隐藏方法,包括以下步骤:a1)检查电子文档是否为XML格式,如果不是,则将其转换为XML格式;a2)指定多种不同的字间距表示多种不同的信息;a3)将水印信息转换为二进制比特流,并分为多个二进制比特段;a4)用每个字间距表示一段所述二进制比特段,依次将XML文档中文字的字间距修改为不同的指定字间距。所述的水印隐藏方法,所述步骤a2还包括:a21)根据指定字间距的种类数,确定每个字间距表示信息的比特数;当指定字间距为a和b两种时,利用字间距a代表比特信息1,用字间距b代表比特信息0,则每2个字之间可以隐藏一个比特信息;当指定字间距为z种时,则每两个字之间可以隐藏l=log
2z个比特信息,z和l为正整数;a22)对指定字间距进行编码——以z种为例,将上述字间距按照从第0种到第z-1种的顺序编号{0,1,2,3,...,z-1},{b
0,b
1,b
2,b
3,...,b
z-1}表示与字间距相对应的z种二进制比特段,各个比特段长度为l。所述的水印隐藏方法,所述步骤a3还包括:a31)将需要隐藏的水印信息W转化为二进制比特流B;a32)利用密钥Key对二进制比特流B进行置乱,得到置乱后的二进制比特流B1;a33)在转化的二进制比特流B1前加入长度为log
2l的包头构成的二进制比特流B2,包头表示补0的个数;a34)并在B2后面补充0构成长度为l的整数倍的二进制比特流B3;a35)然后将B3进行分段处理,将二进制比特流B3划分为若干个长度为l比特的比特段,Bit
1,Bit
2...Bit
i...,i为正整数。所述的水印隐藏方法,在所述步骤a33中,包头设置为长度为k比特的比特段a
1a
2a
3...a
k,k=log
2l,对转化的二进制比特流B2进行判断,设[Len(B2)]/l=m,Len函数表示取二进制比特流B2的长度,m表示取整,[Len(B2)]modl=n,n表示余数,若二进制比特流B2的长度不是分段长度l的整数倍时,在B2的末尾补上l-n个比特的0后得到新二进制比特流B3,其比特流长度为l的整数倍;并设置B3的包头比特段a
1a
2a
3...a
k的二进制数值为补充的0的个数。所述的水印隐藏方法,所述步骤a4还包括步骤:a41)根据字间距{0,1,2,3,...,z-1}与二进制比特段{b
0,b
1,b
2,b
3,...,b
z-1}的对应关系,将划分的若干长度为l的二进制比特段Bit
i代表的水印信息分别隐藏到文档中,即将字间距逐一修改为二进制比特段对应的字间距的距离;a42)将XML文档的字间距的修改为不同的字间距则是通过找到XML文档的字间距描述标记,修改相应的值。一种基于XML的电子文档的水印提取方法,包括如下步骤:b1)检查电子文档是否为XML格式,如果不是,则将其转换为XML格式;b2)根据预先指定的不同字间距的种数,确定每个字间距表示的二进制比特段;b3)从电子文档中读取字间距,判断字间距的值,将字间距转化为步骤b2中对应的二进制比特段;b4)将各二进制比特段组合成二进制比特流,并转换为相应的水印信息。所述的水印提取方法,所述步骤b2包括,b21)根据指定字间距的种类数,确定每个字间距表示信息的比特数;当指定字间距为两种时,利用字间距a代表比特信息1,用字间距b代表比特信息0,则每2个字之间可以提取一个比特信息;当指定字间距为z种时,则每两个字之间可以提取l=log
2z个比特信息,z和l为正整数;b22)对预先指定的z种指定字间距进行译码,即将字间距按照从第0种到第z-1种的顺序编号{0,1,2,3,...,z-1},各个字间距表示为与其相对应的z种二进制比特段{b
0,b
1,b
2,b
3,...,b
z-1},各个比特段长度为l比特,l=log
2z。所述的水印提取方法,所述步骤b3包括b31)对字间距进行判断时,将每两个字之间的字间距按照和编码相同的规则进行译码,即根据字间距{0,1,2,3,...,z-1}与二进制比特段{b
0,b
2,b
3,...,b
z-1}的对应关系,转换为每个字间距对应的二进制比特段Bit
1,Bit
2...Bit
i,i为正整数,将各二进制比特段合并得到二进制比特流B3;b32)字间距的读取是通过找到XML文档的字间距描述标记,读取出相应的值。所述的水印提取方法,所述步骤b4包括,b41)对二进制比特流B3,其前k个比特a
1a
2a
3...a
k是包头,k为log
2l,l表示每两个字之间嵌入的比特段长度,根据包头的二进制数值确定二进制比特流B3末尾补0的个数;b42)去除二进制比特流B3末尾的补0得到二进制比特流B2;b43)对得到的二进制比特流B2,去除长度为k的包头a
1a
2a
3...a
k,得到二进制比特流B1;b44)然后利用密钥Key对得到的二进制比特流B1进行置乱恢复,得到恢复后的序列B;b45)最后将二进制比特流B转化为水印信息W。本发明相对于现有技术的有益效果:1.用不同的字间距代表不同的水印信息,可以通过修改字间距达到隐藏本发明的水印信息的目的,肉眼无法察觉,因而隐蔽性很好。2.将需要隐藏的水印信息转化为二进制比特流.将字间距逐一修改为二进制比特流对应的距离,实现了用少量文字隐藏大量信息的目的。3.将各种水印信息W进行转化,转化为二进制比特流B,提取时也是将所得的比特流B转化为水印信息W,从而使算法具有通用性,水印信息W可以是汉字也可以是图片。
附图说明图1:水印隐藏过程;图2:水印提取过程;图3:WORD的XML文档层次图;图4:WORD的XML文档文字部分<w:body>的层次图。
具体实施方式如图1所示,简要概括本发明的水印隐藏方法为:首先对原始文档1进行判断,并转化为XML文档2,然后指定间距3,将要隐藏的水印信息转化为二进制比特流4,在转化过程中需要进行添加包头和补零5的处理,对前述处理的二进制比特流进行分段划分6,实现隐藏水印7,至此对文档的水印隐藏结束,得到水印文档8。如图2所示,水印的提取方法为隐藏方法的逆过程,简要概括如下:首先对水印文档9进行判断,并转化为XML文档10,然后进行字间距判断11,提取出字间距对应的二进制比特段12,并将二进制比特段进行合并,得到二进制比特流13,并对得到的二进制比特流进行去除包头和末尾补0的处理14,然后将其转化为水印信息15,至此对水印的提取结束,提取出水印16。下面通过具体实施例,对本发明进一步进行阐述,以下为具体实施例1。a)水印嵌入过程1.对于一篇电子文档:首先检查电子文档是否为XML格式,如果不是,则将其转换为XML格式,然后对其进行水印的隐藏。基本原理:利用不同的字间距表示不同的信息;文字本身不发生任何改变,人眼几乎察觉不到变化。实施手段:通过修改XML文档中相应的字间距描述标记来达到隐藏水印信息的目的。2.对指定距离进行编码,当有两种指定间距时,利用字间距a代表比特信息1,用字间距b代表比特信息0,本实施例中本发明设有4种指定距离——字间距的顺序编号为{0,1,2,3},各个字间距代表的比特段长度为2,各个编号对应的二进制比特段为{00,01,10,11}。3.将需要隐藏的水印信息W设为汉字“机密文件”并通过算法将其转化为64bits二进制比特流B=“1011101111111010110000111101110011001110110001001011110011111110”,本算法利用md5产生密钥Key对水印序列B进行置乱,得到置乱后的序列B1=“1010101110111010110100111101110011001110110101001011111011111100”包头长度为k=log
2l=1,补充的0的个数为1,包头的二进制数值为1,得到加包头的二进制比特流B2=“11010101110111010110100111101110011001110110101001011111011111100”和末尾补充0的比特流B3=“110101011101110101101001111011100110011101101010010111110111111000”然后将二进制比特流B3进行分段处理。因为总共有4种指定字间距,每两个字符之间可以隐藏2比特信息。因此,将二进制比特流B划分为33个长度为2的段,Bit1,Bit2...Biti。4.根据字间距与二进制比特段{00,01,10,11}的对应关系,将划分的若干长度为2的段的水印信息分别隐藏到文档中,即将字间距逐一修改为二进制比特段对应的距离。本发明总共有4种指定距离,故每两个字之间可以隐藏2bits水印信息,使用限制:每n个字符可以隐藏2(n-1)个比特,如果少于这个字数,水印信息不能全部隐藏于文档中,没有对字符本身的限制,所以本例中为了实现比特流全部嵌入我们要求汉字数必须多于34个。5.隐藏水印时主要方法是找到对应的XML描述标记并修改相应标记的内容来改变文字的字间距。首先如图3所示找到正文标记<w:body>,然后如图4所示找到文字描述标记<w:t>提取出其中的文字,最后找到字间距描述标记<w:spacing>修改其对应的字间距,标准字间距中,<w:spacing>的值value为0,隐藏水印时本发明规定:比特段00代表将标准字间距紧缩0.05磅,<w:spacing>的value值变为-1;01代表将两个字的标准字间距紧缩0.1磅,<w:spacing>的value值变为-2;10代表将标准字间距加宽0.05磅,<w:spacing>的value值变为1;11代表将标准字间距加宽1磅,<w:spacing>的value值变为2。所以实现了2个bits代表4种距离。加入本发明隐藏的水印信息为汉字:“机密文件”,水印添加程序首先将其转化为二进制比特流,进而将对应的字间距变化信息隐藏到XML文档中去。b)提取水印过程6.提取水印信息时-----对得到的文档进行译码,将每两个字之间的字间距按照和编码相同的规则进行译码,根据字间距与二进制比特流{00,01,10,11}的对应关系,提取出每个字间距对应的二进制比特段Biti。7.提取出本发明的水印信息时是通过检查每两个字之间的字间距并与原始字间距进行比较。方法也还是找到文字描述标记<w:t>,然后找到字间距描述标记<w:spacing>,将其对应的字间距与标准字间距进行比较。因为标准字间距<w:spacing>的value值为0,如果<w:spacing>的value值为-1,则代表字间距紧缩0.05磅,则提取比特段为00;如果<w:spacing>的value值为-2,则代表字间距紧缩0.1磅,则提取的比特段为01;如果<w:spacing>的value值为1,则代表字间距加宽0.05磅,则提取的比特段是10;如果<w:spacing>的value值为2,则代表字间距加宽1磅,则提取的比特段是11;然后将提取的二进制比特段合并为比特流并转化为汉字,最终得到的水印信息为:“机密文件”。可见本发明的水印程序能正确的提取出水印信息。8.并将提取出的二进制比特段Bit
1,Bit
2...Bit
i...合成为二进制比特流B3=“110101011101110101101001111011100110011101101010010111110111111000”其前k个比特代表包头信息,包头长度k=log
2l=1,包头的二进制数值表示末尾补0的个数,得到补充的0的个数为1,去除最末补0,得到B2=“11010101110111010110100111101110011001110110101001011111011111100”,去除包头得到B1=“1010101110111010110100111101110011001110110101001011111011111100”对其利用md5产生密钥Key进行置乱恢复得到二进制比特流B=“1011101111111010110000111101110011001110110001001011110011111110”最后将其转化为相应的水印信息W“机密文件”。9.若对本发明的文档进行修改,如删除文档中的文字或添加修订。发现也能正确的提取出水印信息,进而证明本发明的水印方法可以在修订模式下能正确的提取出水印信息。对删除文档进行水印的提取时,必须找到文字删除标记<w:deltext>,然后找到对应的字间距描述标记<w:spacing>进行同样的水印提取过程。10.在对电子文档添加表格和修改字体字号的情况下,本发明也能正确的添加和提取水印信息,证明本发明的水印处理方法和程序具有较好的通用性。具体实施例2:实施例1中我们嵌入的水印信息为汉字而实施例2中嵌入的水印信息为图片,另外每两个字之间嵌入的水印信息也由2bits表示4种距离提高到了3bits表示8种距离,因此嵌入的容量提高了,包头和补0都做了相应的改变。下面通过具体实施例2,对本发明进一步进行阐述,以下为具体实施例2实施过程。a)水印嵌入过程1.对于一篇电子文档:首先检查电子文档是否为XML格式,如果不是,则将其转换为XML格式,然后对其进行水印的隐藏。基本原理:利用不同的字间距表示不同的信息,文字本身不发生任何改变;人眼几乎察觉不到变化。实施手段:通过修改XML文档中相应的字间距描述标记的值来达到隐藏水印信息的目的。2.对指定距离进行编码,当有两种指定间距时,利用字间距a代表比特信息1,用字间距b代表比特信息0,本实施例中设有8种指定距离——字符距离的顺序编号为{0,1,2,3,4,5,6,7},比特流长度为3,各个编号对应的二进制比特段为{000,001,010,011,100,101,110,111}。3.将需要隐藏的水印信息W设为图片G并通过算法将其转化为64bits二进制比特流B=“1011101111111010110000111101110011001110110001001011110011111110”,本算法利用md5产生密钥Key对水印序列B进行置乱,得到置乱后的序列B1=“1010101110111010110000101101110111001110110111101011110011101110”,包头长度为k=log
2l=2,补充的0的个数为0,得到加包头的二进制比特流B2=“001010101110111010110000101101110111001110110111101011110011101110”,和B3=“001010101110111010110000101101110111001110110111101011110011101110”然后将二进制比特流B3进行分段处理。因为总共有8种指定字间距,每两个字符之间可以隐藏3比特信息。因此,将二进制比特流B划分为22个长度为3的段,Bit1,Bit2...Biti...。4.根据字间距与二进制比特段{000,001,010,011,100,101,110,111}的对应关系,将划分的若干长度为3的段的水印信息分别隐藏到文档中,即将字间距逐一修改为二进制比特段对应的距离。本发明总共有8种指定距离,故每两个字之间可以隐藏3bits水印信息,使用限制:每n个字符可以隐藏3(n-1)个比特,如果少于这个字数,水印信息不能全部隐藏于文档中;没有对字符本身的限制,所以本例中我们要求汉字数必须多于23个。5.隐藏水印时主要方法是找到对应的XML文档的相应的描述标记并修改相应标记的内容来改变文字的字间距。首先如图3所示找到正文标记<w:body>,然后如图4所示找到文字描述标记<w:t>提取出其中的文字,最后找到字间距描述标记<w:spacing>修改其对应的字间距,标准字间距中,<w:spacing>的值value为0,隐藏水印时本发明规定:比特段000代表将标准字间距紧缩0.05磅,<w:spacing>的value值变为-1;001代表将两个字的标准字间距紧缩0.1磅,<w:spacing>的value值变为-2;010代表将标准字间距紧缩0.15磅,<w:spacing>的value值变为-3;011代表将标准字间距紧缩0.2磅,<w:spacing>的value值变为-4;100代表将标准字间距加宽0.05磅,<w:spacing>的value值变为1;101代表将两个字的标准字间距加宽0.1磅,<w:spacing>的value值变为2;110代表将标准字间距加宽0.15磅,<w:spacing>的value值变为3;111代表将标准字间距加宽0.2磅,<w:spacing>的value值变为4。所以实现了3个bits代表8种距离。加入本发明隐藏的水印信息为图片G,水印添加程序首先将其转化为二进制比特流,进而将对应的字间距变化信息隐藏到XML文档中去。b)提取水印过程6.提取水印信息时——对得到的文档进行译码,将每两个字之间的字间距按照和编码相同的规则进行译码,根据字间距与二进制比特段{000,001,010,011,100,101,110,111}的对应关系,提取出每个字间距对应的二进制比特段Biti。7.提取出本发明的水印信息。检查每两个字之间的字间距并与原始字间距进行比较。方法也还是找到文字描述标记<w:t>,然后找到字间距描述标记<w:spacing>,将其对应的字间距与标准字间距进行比较。因为标准字间距<w:spacing>的value值为0,如果<w:spacing>的value值为-1,则代表字间距紧缩0.05磅,则对应的比特段为000;如果<w:spacing>的value值为-2,则代表字间距紧缩0.1磅,则对应的比特段为001;如果<w:spacing>的value值为-3,则代表字间距紧缩0.15磅,则对应的比特段为010;如果<w:spacing>的value值为-4,则代表字间距紧缩0.2磅,则对应的比特段为011;如果<w:spacing>的value值为1,则代表字间距加宽0.05磅,则对应的比特段是100;如果<w:spacing>的value值为2,则代表字间距加宽1磅,则对应的比特段是101;如果<w:spacing>的value值为3,则代表字间距加宽0.15磅,则对应的比特段是110;如果<w:spacing>的value值为4,则代表字间距加宽2磅,则对应的比特段是111;然后将比特段合并为比特流,最后将提取的二进制比特流转化为图片,得到水印信息为图片G’。可见本发明的水印程序能正确的提取出水印信息。8.并将提取出的二进制比特段Bit
1,Bit
2...Bit
i...合成为二进制比特流B3=“001010101110111010110000101101110111001110110111101011110011101110”其前k个比特代表包头信息,包头长度k=log
2l=2,包头的二进制数值表示末尾补0的个数,包头长度为k=log
2l=2,其二进制数值为0得到补充的0的个数为0,去除补0,B2=“001010101110111010110000101101110111001110110111101011110011101110”,去除包头得B1=“1010101110111010110000101101110111001110110111101011110011101110”并对其利用md5产生密钥Key进行置乱恢复得二进制比特流B=“1011101111111010110000111101110011001110110001001011110011111110”转化为相应的水印W为图片G’。9.若对本发明的文档进行修改,如删除文字或添加修订,发现也能正确的提取出水印信息,进而证明本发明的水印方法可以在修订模式下正确的提取出水印信息。对删除文档进行水印的提取时,必须找到文字删除标记<w:deltext>,然后找到对应的字间距描述标记<w:spacing>进行同样的水印的提取过程。10.在对电子文档添加表格和修改字体字号,本发明也能正确的添加和提取水印信息,证明本发明的水印处理方法和程序具有较好的通用性。